#pragma once
#include <iostream>
#include <vector>
#include <ctime>
typedef void (*Task)(); //函数指针

void PrintLog()
{
    std::cout << "任务：打印日志" << std::endl;
}

void DownLoad()
{
    std::cout << "任务：下载" << std::endl;
}

void UpLoad()
{
    std::cout << "任务：上传" << std::endl;
}

class ManageTask
{
public:
    ManageTask()
    {
        srand(time(nullptr)); //种随机数种子
    }

    void Register(Task t)
    {
        _tasks.push_back(t);
    }

    int Code()
    {
        return rand() % _tasks.size(); //随机数 
    }

    void Execute(int code)
    {
        if(code >= 0 && code < _tasks.size())
        {
            _tasks[code](); //以函数指针的方式直接调用
        }
    }

    ~ManageTask()
    {}

private:
    std::vector<Task> _tasks; //vector里存函数指针
};
